# initialize(12, 0, 0)=>NoError, initialize(24, 0, 0)=>Error, initialize(10, 60, 5)=>Error,
# initialize(12, 0, 60)=>Error, initialize(12, 12, 12)=>NoError,
# initialize(12, 0, 0)->vorstellen(0, 30, 0)=>{12, 30, 0},
# initialize(12, 0, 0)->vorstellen(0, 60, 0)=>Error
# initialize(12, 0, 0)->mode_12()->vorstellen(5, 30, 0)=>{5, 30, 0},
# initialize(12, 0, 0)->mode_12()->vorstellen(5, 30, 0)=>{5, 30, 0}->mode_24()->vorstellen(0, 0, 0)=>{17, 30, 0}
class Uhr
  $MODE_12_24 = 24
  def mode_12()
    $MODE_12_24 = 12
  end
  def mode_24()
    $MODE_12_24 = 24
  end
  def initialize(stunde, minute, sekunde)
    validate_stunde(stunde)
    validate_minute_sekunde(minute)
    validate_minute_sekunde(sekunde)
    @sekunde = umrechnung(stunde,minute,sekunde)
  end
  def anzeigen()
     @sekunde.to_s
  end
  def vorstellen(stunde,minute,sekunde)
    validate_stunde_vorstellen(stunde)
    validate_minute_sekunde(minute)
    validate_minute_sekunde(sekunde)
    @sekunde = @sekunde + umrechnung(stunde, minute, sekunde)    
    anz_tage = anzahl_tage() #berechnet die Anzahl der Tage
    @sekunde = @sekunde-(anz_tage*3600*24)
    uhrzeit = berechne_uhrzeit()
   return uhrzeit
  end
  def anzahl_tage()
    @sekunde.to_i / (3600*24)
  end
  def berechne_uhrzeit()
    uhrzeit = Array.new
    uhrzeit[0]  = @sekunde/3600
    uhrzeit[1]  = @sekunde/60-(uhrzeit[0]*60)
    uhrzeit[2] = @sekunde - (uhrzeit[0]*3600) - (uhrzeit[1]*60)

    if ($MODE_12_24 == 12 and uhrzeit[0] > 12) then
      uhrzeit[0] -= 12
    end
    return uhrzeit
  end
  def umrechnung(stunde,minute,sekunde)
    sekunde+(minute*60)+(stunde*3600)
  end
  def validate_stunde(stunde)
    raise 'falsche Stundenanzeige' if stunde > $MODE_12_24-1 or stunde < 0
  end
  def validate_minute_sekunde(value)
    raise 'falsche Minuten oder Sekundenanzeige' if value > 59 or value < 0
  end
  def validate_stunde_vorstellen(stunde)
    raise 'falsche Stundenanzeige' if stunde < 0
  end
end
uhr = Uhr.new(1,0, 0)
uhr.mode_12()
uhrzeit = Array.new
uhrzeit = uhr.vorstellen(1, 0, 0)
puts(uhrzeit[0].to_s + ":" + uhrzeit[1].to_s + ":" + uhrzeit[2].to_s)
uhr.mode_24()
uhrzeit = uhr.vorstellen(0, 0, 0)
puts(uhrzeit[0].to_s + ":" + uhrzeit[1].to_s + ":" + uhrzeit[2].to_s)